Computer systems typically include a number of different tools, or programs, designed to assist the user in accomplishing a particular task. Some of the more common tools used in computer systems include, by way of example only, a program edit tool, a build tool, a spell check tool, a debug tool, and a version management tool. In most prior art computer system environments, tool cooperation was achieved by the user orchestrating even the simplest tool interactions. In its basic form, such a computer system allows the user to utilize the functionalities of a particular tool via a windows-based interface. A block diagram of such a computer system's tool set 100 is given in FIG. 1. It will be appreciated from the system in FIG. 1 that tool A 110, tool B 120, and tool C 130 are not capable of communicating with other tools on computer system 100.
FIG. 2 shows a block diagram of a tool set with programmatic access to the functionality of each tool. Basically, FIG. 2 shows a system in which the tools have the ability to send messages (112, 122, 132) and to receive messages (114, 124, 134). The disadvantage of this system is that although each tool has the capability to send and receive messages, there is still no communication between each of the individual tools.
FIG. 3 shows a block diagram of a tool set with fixed connections between the functionalities of the different tools. Further information regarding the implementation of a system such as the one shown in FIG. 3 is provided in the aforementioned U.S. Pat. No. 5,075,847 entitled "Method and Apparatus for Computer Program Encapsulation." The system of FIG. 3 is an improvement over that of FIG. 2 in that user productivity is enhanced by providing means for the individual tools to request actions from other tools rather than requiring user intervention. The system of FIG. 3 is a preprogrammed, event driven system. For example, assuming tool A is an editor tool and tool B is a spell check tool, the system may be preprogrammed such that whenever the edit tool saves a file, the spell check tool spell checks the file. While such systems are generally satisfactory, these systems have very generic preprogrammed interactions that can only be changed by a software programmer.
Therefore, the general user is not able to customize his system to the tool interactions of his choice. The general user will have to settle for preprogrammed tool and event interactions or invoke the use of a tool manually. While the user can manually invoke tools as necessary, it is desirable for the user to be able to customize a tool interaction system to his own unique needs, so that he can then concentrate on application tasks rather than coordinating and managing the software tools. However, most general users are unable to create tool and event interactions of their own choices, because they do not know how to program software. Accordingly, there is a need for a system that would allow a general computer user to modify the behavior of his software tools and the interactions between his software tools, simply, without writing a single line of code or changing the code of the software tools.